﻿/**
 * Name             :   UserProperty 
 * Namespace        :   HAS.Core.Registry.DataSource
 * Base Classe      :   Interfaces.IDataModel
 * Type             :   Class
 * Author           :   Hamza saii (hamzasaii@yahoo.fr)
 * Creation         :   18/09/2014
 * Updated          :   19/09/2014
 * Licence          :   Public
 * */

namespace HAS.Core.Registry.DataSource
{

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    /// <summary>
    /// Cette classe contient les paramètres utilisateurs
    /// </summary>
    /// <remarks>Tous les paramètres d'utilisateur doivent êtres ecrites ici</remarks>
    public class UserProperty 
    {


#region Field
        private string _Username = "";
        private string _UserTheme = "";
#endregion

#region Propertys
        /// <summary>
        /// définie le nom d'utilisateur (Param Example)
        /// </summary>
        public string Username
        {
            get
            {
                return _Username;
            }

            set
            {
                RaiseChangingEvent("Username");
                _Username = value;
                RaiseChangedEvent("Username");
            }
        }

        /// <summary>
        /// Définie le thème de l'utilisateur (Param Example)
        /// </summary>
        public string UserTheme
        {
            get
            {
                return _UserTheme;
            }
            set
            {
                RaiseChangingEvent("UserTheme");
                _UserTheme = value;
                RaiseChangedEvent("UserTheme");
            }
        }

        /// <summary>
        /// Permet de déclancher l'évenement PropertyChanged
        /// </summary>
        /// <param name="paramname">Le nom de la propriété modifiée</param>
        private void RaiseChangedEvent(string paramname)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(null, new System.ComponentModel.PropertyChangedEventArgs(paramname));
            }
        }

        /// <summary>
        /// Permet de déclanché l'évenement PropertyChanging
        /// </summary>
        /// <param name="paramname">Le nom de la propriété en cours de changement</param>
        private void RaiseChangingEvent(string paramname)
        {
            if (PropertyChanging != null)
            {
                PropertyChanging(null, new System.ComponentModel.PropertyChangingEventArgs(paramname));
            }
        }

#endregion

#region Events
        /// <summary>
        /// Représente l'évenement lorsque la propriété à changé
        /// </summary>
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        /// <summary>
        /// Représente l'évenement lorsque la propriété en cours de changement
        /// </summary>
        public event System.ComponentModel.PropertyChangingEventHandler PropertyChanging;
#endregion

    }
}
